In a communication system, channel coding schemes may typically be employed for error correction. For instance, turbo codes may be used for reliable communications over a wireless channel. A variety of methods may be employed to decode these channel coding schemes. For example, turbo codes are generally decoded using an iterative decoding technique.
Some iterative decoding techniques process results from an underlying algorithm. For instance, a maximum a posteriori (MAP) algorithm, a variant such as the max-log-MAP or log-MAP, or a similar type of algorithm is generally used to decode a constituent code within a turbo code. The MAP algorithm may be referred to as a decoder. The results from the MAP algorithm, such as output log-likelihood ratios (LLRs), can then be used or modified for further decoding iterations. The MAP algorithm uses forward and backward recursions to update probability metrics and subsequently decode the constituent code. However, the MAP algorithm requires memory proportional to the frame size. In some standards, the frame sizes may reach up to 20,728 bits. Because the memory requirements of the MAP algorithm are proportional to the frame size, the amount of memory necessary to implement the MAP algorithm is a serious concern. For example, for a frame size of 20,728 bits and an eight-state constituent code, 2.65 Mbits of memory is required.
To alleviate these memory requirements, windowing techniques are frequently employed. In conventional windowing techniques, a frame is divided into windows. The MAP algorithm is performed one window at a time and thus only requires an amount of memory proportional to the window size.
However, while memory requirements are reduced, these conventional windowing techniques may not produce results that are as reliable as those produced without windowing. The results are not as reliable because the initial conditions for the forward recursion at the beginning of the window or the backward recursion at the end of the window are unknown, and must be estimated through a training procedure. Training recursions are run forward from a time before the beginning of the window or backward from a time after the end of the window to obtain reliable metric values for the initial conditions at the beginning and end of the window. The training period is often set to 32 or more, which may provide acceptable performance degradation from the un-windowed MAP algorithm.
Because the training is required for each window and the training period is the same for each window, an increase in the complexity of the windowing technique results. In some instances, the training period is equal to the window size. This doubles the complexity of a forward or backward recursion.
Moreover, because the training period is fixed over all signal-to-noise ratios (SNRs) and over all iterations, the training cost remains the same for all decoding iterations, even if the complexity of the iteration differs from that of the previous or subsequent iteration.
It would be desirable therefore to provide a method of initialization that allows near-optimal performance and that reduces the complexity associated with training.